<?php

/**
 * This is the model class for table "OA".
 *
 * The followings are the available columns in table 'OA':
 * @property integer $id
 * @property integer $tipoOA
 * @property string $titulo
 * @property integer $idAreaConhecimento
 * @property string $objetivos
 * @property integer $nivelEnsino
 * @property integer $serieEnsino
 * @property string $versao
 * @property string $local
 * @property string $url
 * @property integer $idAutor
 * @property string $dataSubmissao
 * @property integer $idUsuario
 * @property string $observacao
 * @property string $img
 *
 * The followings are the available model relations:
 * @property AreaConhecimento $idAreaConhecimento0
 * @property Autor $idAutor0
 * @property Tipooa $tipoOA0
 * @property Usuario $idUsuario0
 * @property Avaliacaooa[] $avaliacaooas
 */
class OA extends CActiveRecord
{
	/**
	 * Returns the static model of the specified AR class.
	 * @return OA the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'OA';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		//OLD: array('tipoOA, titulo, idAreaConhecimento, objetivos, idAutor, dataSubmissao, idUsuario', 'required'),
		return array(
			array('tipoOA, titulo, idAreaConhecimento, objetivos, idAutor', 'required'),
			array('tipoOA, idAreaConhecimento, nivelEnsino, serieEnsino, idAutor, idUsuario', 'numerical', 'integerOnly'=>true),
			array('titulo, versao', 'length', 'max'=>45),
			array('objetivos', 'length', 'max'=>300),
			array('local, url, observacao, img', 'length', 'max'=>140),
			// The following rule is used by search().
			// Please remove those attributes that should not be searched.
			array('id, tipoOA, titulo, idAreaConhecimento, objetivos, nivelEnsino, serieEnsino, versao, local, url, idAutor, dataSubmissao, idUsuario, observacao, img', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'idAreaConhecimento0' => array(self::BELONGS_TO, 'AreaConhecimento', 'idAreaConhecimento'),
			'idAutor0' => array(self::BELONGS_TO, 'Autor', 'idAutor'),
			'tipoOA0' => array(self::BELONGS_TO, 'Tipooa', 'tipoOA'),
			'idUsuario0' => array(self::BELONGS_TO, 'Usuario', 'idUsuario'),
			'avaliacaooas' => array(self::HAS_MANY, 'Avaliacaooa', 'idOA'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id' => 'ID',
			'tipoOA' => 'Tipo do Objeto de Aprendizagem',
			'titulo' => 'Título',
			'idAreaConhecimento' => 'Área de Conhecimento/Disciplina',
			'objetivos' => 'Objetivos',
			'nivelEnsino' => 'Nível Ensino',
			'serieEnsino' => 'Série Ensino',
			'versao' => 'Versão',
			'local' => 'Arquivo',
			'url' => 'Url',
			'idAutor' => 'Autor',
			'dataSubmissao' => 'Data da Submissão',
			'idUsuario' => 'Usuário',
			'observacao' => 'Observação',
			'img' => 'Imagem',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions.
	 */
	public function search()
	{
		// Warning: Please modify the following code to remove attributes that
		// should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id',$this->id);
		$criteria->compare('tipoOA',$this->tipoOA);
		$criteria->compare('titulo',$this->titulo,true);
		$criteria->compare('idAreaConhecimento',$this->idAreaConhecimento);
		$criteria->compare('objetivos',$this->objetivos,true);
		$criteria->compare('nivelEnsino',$this->nivelEnsino);
		$criteria->compare('serieEnsino',$this->serieEnsino);
		$criteria->compare('versao',$this->versao,true);
		$criteria->compare('local',$this->local,true);
		$criteria->compare('url',$this->url,true);
		$criteria->compare('idAutor',$this->idAutor);
		$criteria->compare('dataSubmissao',$this->dataSubmissao,true);
		$criteria->compare('idUsuario',$this->idUsuario);
		$criteria->compare('observacao',$this->observacao,true);
		$criteria->compare('img',$this->img,true);

		return new CActiveDataProvider(get_class($this), array(
			'criteria'=>$criteria,
		));
	}
	
	protected function beforeSave(){
		if($this->isNewRecord){
			$this->dataSubmissao = date('Y-m-d H:i:s');
			$userId = Yii::app()->user->getState('id');
			if($userId != null)
				$this->idUsuario = $userId;
		}
		if(isset($this->img) && ($this->img != null)){
			$img = CUploadedFile::getInstance($this,'img');
			//throw new CHttpException(404,'Olha só isto: '.$img->name.'!');
		} 
		return true;	
	}

	/**protected function afterSave(){
	// Upload
		if(isset($this->img)){
			$img = $this->img;
			//$img = CUploadedFile::getInstance($this,'img');
			//throw new CHttpException(404,'Olha só: '.$img);
			if (is_object($img) && get_class($img)==='CUploadedFile') $this->img = $img;
			if (is_object($this->img)){
				exec("mkdir -p " . Yii::app()->basePath . "/files/{$this->id}");
				$img_path = Yii::app()->basePath . "/files/{$this->id}";
  				$this->img->saveAs($img_path.'/'.$this->img->name);
				echo $this->img;
			}
		} 
		return true;
	}**/
}
